//
//  BaseViewControllerV3.h
//  BaseLib
//
//  Created by CPX on 2018/8/30.
//

#import <UIKit/UIKit.h>
#import "MyNavigationBar.h"

/**
 基类控制器V3
 @author yzl
 */
@interface BaseViewControllerV3 : UIViewController


/**
 页面名称
 */
@property (nonatomic, copy) NSString *pageName;

/**
 状态栏是否高亮
 */
@property (nonatomic) BOOL statusBarIsLight;


/**
 通用导航栏
 */
@property (nonatomic, strong) MyNavigationBar *myNavigationBar;

#pragma mark - 初始化相关
/**
 初始方法第一级
 */


/**
 注册通知等
 */
- (void)initRegister;

/**
 UI初始
 */
- (void)initUI;

/**
 加载数据
 */
- (void)loadData;


/**
 初始化方法第二级，默认放在initUI下
 */


/**
 初始化View
 */
- (void)initViews;

/**
 初始化导航
 */
- (void)initNavigation;

/**
 初始化其他View
 */
- (void)initOtherViews;


/**
 默认导航栏初始化
 */
- (void)initDefaultNavigation;


/**
 设置状态栏状态
 
 @param isLight 是否高亮
 @param isAnimate 是否有动画
 */
- (void)setStatusBarLight:(BOOL)isLight animate:(BOOL)isAnimate;

#pragma mark - 右滑手势

/**
 右滑手势
 
 @return 默认返回为YES,表示支持右滑返回
 */
- (BOOL)gestureRecognizerShouldBegin;

#pragma mark - HUD 相关


/**
 显示提示在此Controller的View上
 
 @param text 提示
 */
- (void)showHUDInView:(NSString*)text;

/**
 显示提示在Window上
 
 @param text 提示
 */
- (void)showHUDInWindow:(NSString*)text;

/**
 显示LoadingController的View上
 */
- (void)showLoadingInView;


/**
 显示Loading在Window上
 */
- (void)showLoadingInWindow;


/**
 显示提示在此Controller的View上
 
 @param text 提示
 @param delay 延迟
 */
- (void)showHUDInView:(NSString *)text hideDelay:(float)delay;


/**
 显示提示在Window上
 
 @param text 提示
 @param delay 延迟
 */
- (void)showHUDInWindow:(NSString*)text hideDelay:(float)delay;


/**
 隐藏d当前View的HUD
 */
- (void)hideHUDInView;

/**
 隐藏window上的HUD
 */
- (void)hideHUDInWindow;

#pragma mark - 打点数据


/**
 数据打点，默认使用firebase
 
 @param event 事件
 */
- (void)logEvent:(NSString*)event;

/**
 数据打点，默认使用firebase
 
 @param event 事件
 @param params 参数
 */
- (void)logEvent:(NSString*)event params:(NSDictionary*)params;


#pragma mark - 点击导航栏按钮事件,默认LTR，RTL反过来

/**
 导航左边按钮点击事件
 */
- (void)onLeftButtonTouched;

/**
 导航右边第一个按钮点击事件
 */
- (void)onRightButton1Touched;

/**
 导航右边第二个按钮点击事件
 */
- (void)onRIghtButton2Touched;


@end
